Techniques for time transfer via signal encoding

ABSTRACT

Techniques for time transfer via signal encoding are disclosed. In one particular exemplary embodiment, the techniques may be realized as a method for time transfer via signal encoding comprising generating a time service ordered-set for inclusion in a physical coding sublayer frame of a physical layer device, generating time service data for inclusion in the physical coding sublayer frame of the physical layer device, and transmitting the physical coding sublayer frame.

CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application is a continuation of U.S. patent applicationSer. No. 12/347,314, filed Dec. 31, 2008, which claims priority to U.S.Provisional Patent Application No. 61/101,802, filed Oct. 1, 2008, eachof which is hereby incorporated by reference herein in its entirety.

FIELD OF THE DISCLOSURE

The present disclosure relates generally to telecommunications systemsand, more particularly, to techniques for time transfer via signalencoding.

BACKGROUND OF THE DISCLOSURE

Time and/or frequency distribution is a fundamental requirement forpacket networks. One of the biggest hurdles packet networkingtechnologies face in replacing traditional Time Division Multiplexing(TDM) systems in both core and access networks is the transmission ofaccurate timing information (time and/or frequency). Legacy TDM networkswere designed to carry precise frequency synchronization throughouttheir respective networks. But increasingly, access systems such aswireless base stations and multi-service access nodes (MSANs) requiresynchronization delivered over a network backhaul connection for basicconnectivity and assurance of high quality of service to end userapplications. A key dependency in the evolution to Ethernet backhaul intelecommunication networks is an ability to deliver carrier-grade (timeand/or frequency) synchronization over Ethernet to remote wireless basestations and access platforms.

In telecommunication networks, remote and access TDM network elementswith their embedded reference oscillators have traditionally recoveredsynchronization from TDM backhaul connections. As long as the TDMtransmission network was traceable to a Primary Reference Clock (PRC),the remote and access elements could employ relatively simplePhase-Locked Loops (PLLs) to lock their oscillators to a PRC traceablebackhaul feed. However, a problem occurs when a backhaul connectiontransitions to Ethernet, thus isolating the remote and access elementsfrom their source of synchronization. While Ethernet has proven to be auseful, inexpensive, and ubiquitous technology for connectivity, it hasnot been well suited for applications requiring precise synchronization.By nature, it is asynchronous, which creates difficulty for real-time ortiming sensitive applications that require synchronization.

Two principal sources of timing errors must be eliminated to providehigh quality (sub-microsecond level) synchronization of clocks. Thefirst is timing errors introduced by instabilities and drift of localoscillators, and the second is fluctuations in path delay (commonly knowas delay variation) between transmitter and receiver clocks. Oscillatorstability is primarily a component selection issue for a systemdesigner. Employing a high-stability oscillator reduces measurementnoise and improves the ability of a receiver clock synchronizationmechanism to filter out transmission wander and jitter caused by networkimpairments. The primary sources of delay variations are due to Layer 2and higher impairments such as queuing delays in network devices, mediacontention delays, software protocol stack processing delays, operatingsystem and other software tasks delays, etc. Delay variationsignificantly degrades clock synchronization because it introducesvariability to the travel time of timing protocol messages. At Layer 2and higher, regardless of whether a network is lightly or heavilyloaded, messages are short or long, or whether network equipment usespriority queuing or not, the potential for protocol messages toexperience delay variations still exists. Timestamp filtering andminimum delay screening and selection of messages at end nodes, inaddition to the use of robust clock synchronization algorithms, can helpmitigate this problem to some extent, but this depends on traffic loadlevel along a message communication path.

The rationale for minimum delay screening and selection of messages atend nodes is that delay variation on a communication path at Layer 2 andhigher (Layer 2+) will have a probability distribution function with a“floor” or intrinsic minimum. The floor is a minimum delay that a packet(or a timing protocol message) can experience in a given network path.This floor may be viewed as a condition where all queues along thenetwork path between a transmitter and a receiver are near their minimumwhen the particular packet is transmitted. Under normal non-congestedloading conditions on the network path, a fraction of the total numberof packets will traverse the network at or near this floor, even thoughsome may experience significantly longer delays. Under thesenon-congestion conditions, store-and-forward operations in high-speeddevices effectively become forwarding efforts with packets forwardedwith minimum delay. In addition, the delay variation distributionbecomes more concentrated near this floor, with a relatively largefraction of the total packets experiencing this “minimum” or “nearminimum” delay. However, a major limitation of this approach is that, athigher loads, minimum delay screening and selection of messages at endnodes will simply produce poor clock quality since a very small fractionof timing messages will experience the minimum “intrinsic” propagationdelay of the network path.

In view of the foregoing, it may be understood that there may besignificant problems and shortcomings associated with current clocksynchronization technologies.

SUMMARY OF THE DISCLOSURE

Techniques for time transfer via signal encoding are disclosed. In oneparticular exemplary embodiment, the techniques may be realized as amethod for time transfer via signal encoding comprising generating atime service ordered-set for inclusion in a physical coding sublayerframe of a physical layer device, generating time service data forinclusion in the physical coding sublayer frame of the physical layerdevice, and transmitting the physical coding sublayer frame.

In accordance with other aspects of this particular exemplaryembodiment, the method may further comprise generating a transmittimestamp for inclusion in the time service data.

In accordance with further aspects of this particular exemplaryembodiment, the time service ordered-set may be a single specialcode-group selected from unused special code-groups.

In accordance with additional aspects of this particular exemplaryembodiment, the time service ordered-set may be a sequence ofcode-groups comprising an initial special code-group selected fromunused special code-groups followed by at least one additional specialcode-groups selected from the unused special code-groups.

In accordance with still other aspects of this particular exemplaryembodiment, the time service ordered-set may be a sequence ofcode-groups comprising an initial special code-group selected fromunused special code-groups followed by at least one additional datacode-groups.

In accordance with still further aspects of this particular exemplaryembodiment, the at least one additional data code-groups may have one ormore of: high bit transition density, disparity control, and codingdistance.

In accordance with still additional aspects of this particular exemplaryembodiment, the time service ordered-set may indicate a type of the timeservice data.

In accordance with yet other aspects of this particular exemplaryembodiment, the method may further comprise receiving the physicalcoding sublayer frame and extracting the time service data from thereceived physical coding sublayer frame.

In accordance with yet further aspects of this particular exemplaryembodiment, the method may further comprise generating a receivetimestamp to determine a receipt time of the time service data.

In another particular exemplary embodiment, the techniques may berealized as at least one processor readable medium for storing acomputer program of instructions configured to be readable by at leastone processor for instructing the at least one processor to execute acomputer process for performing the above-described method.

In still another particular exemplary embodiment, the techniques may berealized as an apparatus for time transfer via signal encodingcomprising an encoder component to generate a time service ordered-setfor inclusion in a physical coding sublayer frame of a physical layerdevice, a time transfer unit to generate time service data for inclusionin the physical coding sublayer frame of the physical layer device, anda transmitter to transmit the physical coding sublayer frame.

In still another particular exemplary embodiment, the techniques may berealized as an apparatus for time transfer via signal encodingcomprising means for generating a time service ordered-set for inclusionin a physical coding sublayer frame of a physical layer device, meansfor generating time service data for inclusion in the physical codingsublayer frame of the physical layer device, and means for transmittingthe physical coding sublayer frame.

The present disclosure will now be described in more detail withreference to exemplary embodiments thereof as shown in the accompanyingdrawings. While the present disclosure is described below with referenceto exemplary embodiments, it should be understood that the presentdisclosure is not limited thereto. Those of ordinary skill in the arthaving access to the teachings herein will recognize additionalimplementations, modifications, and embodiments, as well as other fieldsof use, which are within the scope of the present disclosure asdescribed herein, and with respect to which the present disclosure maybe of significant utility.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to facilitate a fuller understanding of the present disclosure,reference is now made to the accompanying drawings, in which likeelements are referenced with like numerals. These drawings should not beconstrued as limiting the present disclosure, but are intended to beexemplary only.

FIG. 1 shows a layered model for Gigabit Ethernet in relation to an OpenSystems Interconnection (OSI) 7-layer model in accordance with anembodiment of the present disclosure.

FIG. 2 shows a functional block diagram of the primary sublayers of thePhysical Layer for Gigabit Ethernet in accordance with an embodiment ofthe present disclosure.

FIG. 3 shows a functional block diagram of a transmit component in a PCSsublayer in accordance with an embodiment of the present disclosure.

FIG. 4 shows a simplified state diagram for ordered-set transmission ina PCS transmit component in accordance with an embodiment of the presentdisclosure.

FIG. 5 shows a functional block diagram of a receive component in a PCSsublayer in accordance with an embodiment of the present disclosure.

FIG. 6 shows a simplified state diagram for ordered-set reception in aPCS receive component in accordance with an embodiment of the presentdisclosure.

FIG. 7 shows an encoder for an 8B/10B coding scheme that splits databytes into 3 bit (3B) and 5 bit (5B) portions in accordance with anembodiment of the present disclosure.

FIG. 8 shows example Data (D) and Special (K) Codes for Gigabit Ethernetin accordance with an embodiment of the present disclosure.

FIG. 9 shows special code-groups for Gigabit Ethernet in accordance withan embodiment of the present disclosure.

FIG. 10 shows defined ordered-sets for Gigabit Ethernet in accordancewith an embodiment of the present disclosure.

FIG. 11 shows a PCS encapsulation of a MAC frame in accordance with anembodiment of the present disclosure.

FIG. 12 shows a table indicating when a Start_of_Packet Delimiter (SPD)ordered-set (/S/) may be transmitted in accordance with an embodiment ofthe present disclosure.

FIG. 13 shows a table indicating when an End_of_Packet Delimiter (EPD)may be transmitted with /T/R/K28.5/ code-groups in accordance with anembodiment of the present disclosure.

FIG. 14 shows a table indicating when an End_of_Packet Delimiter (EPD)may be transmitted with /T/R/R/ code-groups in accordance with anembodiment of the present disclosure.

FIG. 15 shows Time Service Ordered-Set (TSOS) and Time Service Dataencapsulation in accordance with an embodiment of the presentdisclosure.

FIG. 16 shows an encapsulation of a Time Service Ordered-Set (TSOS) andTime Service Data (TSD) when an encoder is not busy in accordance withan embodiment of the present disclosure.

FIG. 17 shows an encapsulation of a Time Service Ordered-Set (TSOS) andTime Service Data (TSD) when an encoder is busy in accordance with anembodiment of the present disclosure.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

The present disclosure relates to enhancements to a Physical Layer ofGigabit Ethernet that enable accurate distribution of time andfrequency. In accordance with the present disclosure, network slavedevices may synchronize to a master reference time source (or server)using a messaging protocol. The messaging protocol may be a rangingtechnique by which the slave devices (or clients) may estimate theirtime offsets from the master time reference. The slave devices mayaccomplish this by exchanging a series of timestamped messages at thePhysical Layer with a central time server.

A Physical Coding Sublayer (PCS) of the Physical Layer of GigabitEthernet may map Gigabit Medium-Independent Interface (GMII) signalsinto 10-bit code-groups, and vice-versa, using an 8B/10B block codingscheme. The PCS may accept packets from a Reconciliation sublayer viathe GMII and encode a packet before passing it to a Physical MediumAttachment (PMA) sublayer. The PCS may also decode a bit stream receivedfrom the PMA sublayer and pass it to a Medium Access Control (MAC)sublayer via the GMII and the Reconciliation sublayer.

Some special code-groups of the 8B/10B block coding scheme may comprisedistinct and easily recognizable bit patterns, which may allow areceiver to extract time service data (TSD) embedded directly in a PCSframe sent by a time server (master). Control and management informationin Gigabit Ethernet, as opposed to data, may be communicated through thetransmission of ordered-sets. Ordered-sets may be flexible buildingblocks which may be used for in-band or out-of-band protocol functions.Ordered-sets may be one, two, or four code-groups in length, and maybegin with a code from the Gigabit Ethernet special code-groups. Anordered-set may be either a single special code-group or sequence ofcode-groups comprising an initial special code-group followed byadditional special or data code-groups. The Gigabit Ethernet standarddefines twelve special code-groups out of which only six may be used innormal operation in the form of ordered-sets. The remaining unusedspecial code-groups may be used to define time service ordered-sets(TSOSs) which may be used to mark the presence of TSD in a PCS frame.The TSD may comprise timing messages exchanged between a transmitter anda receiver that may allow the receiver to synchronize its time-of-day(wall-clock) and/or frequency to that of the transmitter. Embedding TSDin such a manner may provide extremely accurate time measurements sincesuch is based on actual transmission and reception times of timingmessages measured directly at the Physical Layer.

Referring to FIG. 1, there is shown a layered model 100 for GigabitEthernet in relation to an Open Systems Interconnection (OSI) 7-layermodel in accordance with an embodiment of the present disclosure. Asshown, Gigabit Ethernet is primarily realized on a Data Link Layer and aPhysical Layer of the OSI 7-layer model. The Physical Layer provides ameans to transform data bytes provided by the Data Link Layer intoappropriate signals for transmission on media. Likewise, the PhysicalLayer converts signals received from media into appropriate data bytesbefore passing them on to the Data Link Layer.

The Physical Layer may comprise several sublayers, including a MediumDependent Interface (MDI) sublayer, a Physical Medium Dependent (PMD)sublayer, a Physical Medium Attachment (PMA) sublayer, a Physical CodingSubsystem (PCS) sublayer, a Gigabit Medium Independent Interface (GMII)sublayer, and a Reconciliation sublayer.

The MDI sublayer defines a connector between the PMD sublayer and media.The media may comprise, for example, a long wavelength (LX) opticalfiber link, a short wavelength (SX) optical fiber link, and/or a coppercable (CX).

The PMD sublayer is responsible for transmitting and receivingindividual bits to/from the media. The PMD sublayer takes a serial bitstream provided by the PMA sublayer and converts it to/from optical orelectrical signals depending upon the media (fiber or copper). The PMDsublayer responsibilities include bit timing, line signal encoding(Non-Return-to-Zero NRZ), and interacting with the media (fiber orcopper).

The PMA sublayer provides the PCS sublayer with a media-independentinterface for connecting to a variety of serial media. Specifically, thePMA sublayer performs symbol serialization and deserialization (SERDES).More specifically, the PMA sublayer serializes an encoded stream of10-bit symbols before transmission, and deserializes an encoded stream10-bit symbols after reception. The PMA sublayer is also responsible foraligning an incoming serial bit stream prior to passing 10-bit symbolsto the PCS sublayer.

The PCS sublayer performs data symbol encoding and decoding,synchronization, and rate matching services for the Data Link Layer,which are usually independent of the physical medium used. Morespecifically, the PCS sublayer is responsible for encoding each bytepassed down from the GMII sublayer into 10-bit code-groups. The PCSsublayer is also responsible for decoding 10-bit code-groups passed upfrom the PMA sublayer into bytes for use by the upper layers. The PCSsublayer also provides carrier detect signals and collision detectsignals, and includes a mechanism for automatic link configurationcalled Auto-Negotiation. Auto-Negotiation is an Ethernet procedure bywhich two connected devices choose common transmission parameters, suchas flow control and duplex mode. In this process, the two connecteddevices first share their capabilities for these parameters, and thenchoose the best possible mode of operation that are shared by the twoconnected devices.

The GMII sublayer is an interface between the Data Link Layer and thePCS sublayer. The PCS sublayer and the GMII sublayer communicate withone another via 8-bit parallel data lines and several control lines. TheGMII sublayer typically provides an easy-to-implement, fully definedinterface that allows a clean separation between the Data Link Layer andPhysical Layer sublayers, and between the Physical Layer sublayers and anetwork management entity. The interface defines speeds up to 1000Mbit/s, implemented using an eight bit data interface clocked at 125MHz, and is backwards compatible with a Media Independent Interface(MII) specification. It can also operate on fall-back speeds of 10/100Mbit/s as per the MII specification. Logically, the PCS sublayer and thePMA sublayer combine to take byte-wide GMII data and convert it into anencoded, serial bit stream (and vice versa).

The Reconciliation sublayer provides a mapping between Physical LayerSignaling (PLS) primitives and logical signals in the GMII sublayer.This is typically an architectural abstraction only, with no particularor required physical or software implementation in a real product. Inpractice, the Reconciliation sublayer typically provides no actualfunction and may be implemented as an integral function of the Data LinkLayer.

The Data Link Layer of Gigabit Ethernet may comprise several sublayers,including a Medium Access Control (MAC) sublayer. The MAC sublayer mayprovide addressing and channel access control mechanisms that make itpossible for several terminals or network nodes to communicate within amultipoint network, typically a local area network (LAN) or metropolitanarea network (MAN). The MAC sublayer may act as an interface between aLogical Link Control (LLC) sublayer of the Data Link Layer and thePhysical Layer.

Referring to FIG. 2, there is shown a functional block diagram 200 ofthe primary sublayers of the Physical Layer for Gigabit Ethernet inaccordance with an embodiment of the present disclosure. Morespecifically, FIG. 2 shows an MDI sublayer 202, a PMD sublayer 204, aPMA sublayer 206, a PCS sublayer 208, and a GMII sublayer 210.

The MDI sublayer 202 receives a serial transmit signal (Transmit Signal)from the PMD sublayer 204 and transmits a serial receive signal (ReceiveSignal) to the PMD sublayer 204.

The PMD sublayer 204 receives a serial transmit signal (Tx_bit) from thePMA sublayer 206 and transmits the serial transmit signal (TransmitSignal) to the MDI sublayer 202. The PMD sublayer 204 also receives theserial receive signal (Receive Signal) from the MDI sublayer 202 andtransmits a serial receive signal (Rx_bit) to the PMA sublayer 206. ThePMD sublayer 204 further transmits a signal level detection signal(SIGNAL_DETECT) indicative of the signal level of the serial receivesignal (Receive Signal).

The PMA sublayer 206 comprises a transmit component 220, a receivecomponent 222, a code-group alignment component 224, and a loopbackcomponent 226.

The transmit component 220 receives a 10-bit parallel encoded signal(tx_code-group<9:0>) from the PCS sublayer 208 and transmits the serialtransmit signal (Tx_bit) to the PMD sublayer 204. The transmit component220 converts the 10-bit parallel encoded signal (tx_code-group<9:0>)that is received from the PCS sublayer 208 into the serial transmitsignal (Tx_bit) that is transmitted to the PMD sublayer 204.

The receive component 222 receives the serial receive signal (Rx_bit)from the PMD sublayer 204 and transmits a 10-bit parallel encoded signal(rx_code-group<9:0>) to the PCS sublayer 208. The receive component 222coverts the serial receive signal (Rx_bit) that is received from the PMDsublayer 204 into the 10-bit parallel encoded signal(rx_code-group<9:0>) that is transmitted to the PCS sublayer 208. Thereceive component 222 also receives and transmits alignment controlsignals (alignment) from/to the code-group alignment component 224 so asto insure proper alignment of the 10-bit parallel encoded signal(rx_code-group<9:0>).

The code-group alignment component 224 receives and transmits alignmentcontrol signals (alignment) from/to the receive component 222 so as toinsure proper alignment of the 10-bit parallel encoded signal(rx_code-group<9:0>).

The loopback component 226 operates to disable the transmission of theserial transmit signal (Tx_bit) from the transmit component 220 to thePMD sublayer 204 and provide a loopback path for the serial transmitsignal (Tx_bit) from the transmit component 220 to the receive component222. This function allows for self-testing of the Physical Layer.

The PCS sublayer 208 comprises a transmit component 230, a receivecomponent 232, a synchronization component 234, a carrier sensecomponent 236, and an auto-negotiation component 238.

The transmit component 230 receives an 8-bit parallel transmit datasignal (TXD<7:0>), a transmit enable signal (TX_EN), a transmit errorsignal (TX_ER), and a GMII transmit clock signal (GTX_CLK) from the GMIIsublayer 210. The transmit component 230 also receives a receivingindicator signal (receiving) from the receive component 232 and atransmit flag signal (xmit) from the auto-negotiation component 238 soas to insure proper configuration of the Physical Layer, as will bedescribed in more detail below. The transmit component 230 transmits the10-bit parallel encoded signal (tx_code-group<9:0>) to the PMA sublayer206 and a transmitting indicator signal (transmitting) to the carriersense component 236. Thus, the transmit component 230 encodes the 8-bitparallel transmit data signal (TXD<7:0>) that is received from the GMIIsublayer 210 into the 10-bit parallel encoded signal(tx_code-group<9:0>) that is transmitted to the PMA sublayer 206.

The receive component 232 receives the 10-bit parallel encoded signal(rx_code-group<9:0>) from the synchronization component 234. The receivecomponent 232 also receives and transmits configuration control signals(configuration) from/to the auto-negotiation component 238 so as toinsure proper configuration of the Physical Layer, as will be describedin more detail below. The receive component 232 transmits an 8-bitparallel receive data signal (RXD<7:0>), a receive data valid signal(RX_DV), a receive error signal (RX_ER), and a receive clock signal(RX_CLK) to the GMII sublayer 210. The receive component 232 transmitsalso transmits the receiving indicator signal (receiving) to thetransmit component 230 and the carrier sense component 236. Thus, thereceive component 232 decodes the 10-bit parallel encoded signal(rx_code-group<9:0>) that is received from the synchronization component234 into the 8-bit parallel receive data signal (RXD<7:0>) that istransmitted to the GMII sublayer 210.

Gigabit Ethernet employs a block coding scheme, whereby a group of databits are encoded into a larger space of code bits. When dealing withblock codes it is common to refer to “data space” (i.e., unencoded bits)and “code space” (i.e., coded bits). Also, a grouping of code bits maybe called a code-word, code-group, or symbol.

In the case of an 8-bit/10-bit (8B/10B) coding scheme, which is thecoding scheme employed for Gigabit Ethernet, there is data space of2⁸=256 8-bit words and code space of 2¹⁰=1024 10-bit words. Such acoding scheme provides a number of important characteristics for GigabitEthernet. First, 8B/10B coding scheme insures sufficient signaltransitions for clock recovery at a receiver. Second, the 8B/10B codingscheme allows control signals to be encoded in a data stream. Third, the8B/10B coding scheme allow specific code mappings that significantlyincrease the likelihood of detecting single- and multiple-bit errorsthrough code violations. Fourth, the 8B/10B coding scheme allows someencodings (used for control signals) to contain a unique, easilyrecognizable code-bit pattern, known as a comma, which is a specialsequence of seven bits that aids in rapid synchronization and receiveralignment.

The code space for the 8B/10B coding scheme is divided into two groupsof codes: a “D” group to be used to encode data bytes and a “K” group tobe used to encode special control characters. One possibleimplementation for the 8B/10B coding scheme is to encode data bytes into8B/10B code-groups during frame transmission and to decode 8B/10Bcode-groups back into data bytes during frame reception. Anotherpossible implementation for the 8B/10B coding scheme is to split databytes into 3 bits (3B) and 5 bits (5B) that are then encoded/decoded, ina coordinated manner, so as to result in 8B/10B encodings/decodings.

Referring to FIG. 3, there is shown a functional block diagram of thetransmit component 230 in the PCS sublayer 208 in accordance with anembodiment of the present disclosure. The transmit component 230 maycomprise a PCS transmit component 302, a transmit clock component 304,and a transmit time transfer unit 306. The PCS transmit component 302may comprise an 8B10B encoder component 308, a transmitting flaggeneration component 310, and a collision monitor and indicatorcomponent 312. The 8B10B encoder 308 may comprise an encoder controlcomponent 314, a data encoding component 316, and an ordered-setgeneration component 318. The encoder control component 314 may comprisean auto-negotiation xmit flag monitor component 320.

The 8B10B encoder component 308 may encode the 8-bit parallel transmitdata signal (TXD<7:0>) that is received from the GMII sublayer 210 intothe 10-bit parallel encoded signal (tx_code-group<9:0>) that istransmitted to the PMA sublayer 206. The 8B10B encoder component 308 mayalso generate other predefined special non-data code-groups, known asspecial code-groups. Sets of these special code-groups, sometimescombined with data code-groups, may be used to construct control signals(such as packet delimiters) or exchange non-packet data for linkconfiguration. These sets of special code-groups are known asordered-sets. The 8B10B encoder component 308 and its associatedcomponents may generate these ordered-sets when required or asappropriate.

The additional bits provided by the expanded code space of the 8B/10Bcoding scheme add transmission overhead, but because there are more10-bit code-groups than 8-bit data words, they provide a degree oftransmission redundancy. This redundancy may be used to separatecode-groups for data and control, to provide sufficient transitiondensity for clock recovery, to allow simple code-group synchronization(alignment), to make error detection more efficient, and to combat poortransmission channel characteristics.

Packet data for transmission may be presented by GMII sublayer 210 usingthe byte-wide TXD<7:0> path and framed by the TX_EN and TX_ER signals.The 8B10B encoder component 308 may continuously generate 10-bitcode-groups and pass them to the PMA sublayer 206. An exemplaryembodiment of the 8B/10B coding scheme is described is greater detailbelow.

The encoder control component 314 may monitor the transmit flag signal(xmit) from the auto-negotiation component 238 (e.g., via theauto-negotiation xmit flag monitor component 320) and both the TX_ENsignal and the TX_ER signal from the GMII sublayer 210. Based upon thesesignals, the encoder control component 314 may instruct the dataencoding component 316 to pass the following code-groups or ordered-setsto the PMA sublayer 206. The code-groups passed to the PMA sublayer 206may provide one of several indications.

First, when no packet data is presented by the GMII sublayer 210 (i.e.,the TX_EN signal and the TX_ER signal are inactive), such as betweenframes, an Idle (/I/) code-group indication may be issued. Thetransmission of Idle ordered-sets may keep receive electronics andoptics “alive” between packets. The Idle ordered-sets may be used as“keepalive” signals for both clock recovery electronics andelectro-optics of a link. If no light is transmitted during inter-packetgaps (IPGs), sometimes referred to as the inter-frame gaps (IFG), anoptical transmitter might not perform properly. Also, if no light istransmitted between packets, the signal level detection signal(SIGNAL_DETECT) may indicate a link failure, thereby triggering thesynchronization component 234 and the auto-negotiation component 238.

Second, when the GMII sublayer 210 indicates a start-of-frame condition(i.e., when the TX_EN signal is freshly asserted or active and the TX_ERsignal is inactive), the 8B10B encoder component 308 may generate aStart_of_Packet Delimiter (SPD) (/S/) code-group.

Third, when the GMII sublayer 210 indicates an end-of-packet condition(i.e., deassertion of the TX_EN signal), the 8B10B encoder component 308may generate an End_of_Packet (/T/) code-group.

Fourth, packet data presented on the TXD<7:0> signal by the GMIIsublayer 210 (i.e., when the TX_EN signal is active and the TX_ER signalis inactive) may be encoded directly by the 8B10B encoder component 308into data (/D/) code-groups (i.e., tx_code-group<9:0>) and passed to thePMA sublayer 206, with the exception that a first byte of a preamble maybe replaced with the SPD code-group. A data code-group, when not used todistinguish or convey information for a defined ordered-set, may conveyone byte of arbitrary data between the GMII sublayer 210 and the 8B10Bencoder component 308. The sequence of data code-groups may bearbitrary, where any data code-group may be followed by any other datacode-group. Data code-groups may be coded and decoded but notinterpreted by the 8B10B encoder component 308. Successful decoding of adata code-group depends on proper receipt of a Start_of_Packet delimiter(SPD) (/S/) code-group.

Fifth, when the GMII sublayer 210 provides a carrier-extend indication(i.e., when the TX_EN signal is inactive, the TX_ER signal is active,and the TXD<7:0> signal=OFF), the 8B10B encoder component 308 maygenerate a Carrier_Extend (/R/) code-group for each GTX_CLK period thatthe indication remains. A two code-group delay may be allowed to givethe 8B10B encoder component 308 time to complete an End_of_Packet (/T/)code-group. In a half-duplex mode, Carrier_Extend (/R/) code-group maybe used both to extend minimum size packets and to ensure carriercontinuation during frame bursting.

Sixth, when the GMII sublayer 210 indicates a transmit-error condition(i.e., when the TX_EN signal is active and the TX_ER signal is active),the 8B10B encoder component 308 may generate an Error_Propagation (/V/)code-group for one or more GTX_CLK periods during a frame transmission.The Error_Propagation (/V/) code-group may be used by repeatersoperating in a half-duplex mode to signal all of its ports that an errorhas been detected.

Lastly, the 8B10B encoder component 308 may encode a 16-bitconfiguration register or next-page transmit register provided by theauto-negotiation component 238 in order to configure itself and acorresponding link partner to a compatible mode of operation. Thisencoded configuration register or next-page transmit register may beissued as a Configuration (/C/) code-group.

All of the above code-groups (except those of packet data) may in factbe a set of 10-bit code-groups in a specified order (i.e.,ordered-sets). These ordered-sets are described in the further detailbelow.

The collision monitor and indicator component 312 may generate acollision detect signal (COL) for the GMII sublayer 210 if it detectssimultaneous transmit and receive packet activity. It should be noted,however, that there may always be simultaneous physical signalingactivity on a medium, since an Idle or Configuration code-group mayalways be sent in the absence of packet activity. Only simultaneouspacket-data activity may constitute a collision. The collision monitorand indicator component 312 may also monitor the receiving indicatorsignal (receiving) from the receive component 232. If a collision hasoccurred, the collision monitor and indicator component 312 may set thecollision detect signal (COL) to active.

The transmitting flag generation component 310 may generate thetransmitting indicator signal (transmitting) for the carrier sensecomponent 236 whenever the PCS transmit component 302 sends out datapackets. As mentioned above, the receive component 232 may generate thereceiving indicator signal (receiving) whenever it receives packets. Thecollision monitor and indicator component 312 may therefore check to seeif the PCS transmit component 302 is both sending and receiving datasimultaneously. If so (i.e., receiving=1 and transmitting=1), then thecollision monitor and indicator component 312 may sent the collisiondetect signal (COL) to the GMII sublayer 206.

As mentioned above, the auto-negotiation xmit flag monitor component 320may monitor the transmit flag signal (xmit) from the auto-negotiationcomponent 238 to determine whether packet data transmission ispermitted, or a link requires (re-)configuration. Duringreconfiguration, the PCS transmit component 302 may ignore packet datapresented on the TXD<7:0> signal by the GMII sublayer 210 and insteadmay transmit a Configuration (/C/) ordered-set as directed by theauto-negotiation component 238.

Referring to FIG. 4, there is shown a simplified state diagram forordered-set transmission in the PCS transmit component 302 in accordancewith an embodiment of the present disclosure. The PCS transmit component302 may be in one of three states: transmitting Configuration (/C/),transmitting Idle (/I/), or transmitting Data (/D/). When in thetransmitting Data state, packets may be transmitted according to theData state diagram portion of FIG. 4. A normal path between states for ahalf-duplex mode (in the absence of errors) may be indicated by the boldtransition paths. The transmit VOID state may be a normal state forrepeaters because they may be required to retransmit all receivedframes, including errors. As such, a void code-group (/V/) may beinserted in an output frame wherever an invalid code-group has beenreceived.

Referring again to FIG. 3, the transmit time transfer unit 306 mayinterface with the 8B10B encoder component 308 in the PCS transmitcomponent 302 to coordinate the transmission of Time ServiceOrdered-Sets (TSOSs) and Time Service Data (TSD) code-groups in thetx_code-group<9:0> signal that is passed to the PMA sublayer 206. TheTime Service Ordered-Sets (TSOSs) and Time Service Data (TSD)code-groups may be transmitted when the PCS transmit component 302 is inthe transmitting Data (/D/) state, as shown in FIG. 4. The transmit timetransfer unit 306 may generate Time Service Data (TSD) messages, capturetimestamps, coordinate the transmission of Time Service Ordered-Sets(TSOSs) and Time Service Data (TSD) code-groups with the 8B10B encodercomponent 308, and interface with the transmit clock component 304 and ahost processor (not shown) supplying time service data.

The transmit clock component 304 may provide a transmit timestampsignal, as well as a transmit timestamp read indication signal, to thetransmit time transfer unit 306.

Referring again to FIG. 2, the carrier sense component 236 may monitorthe transmit and receive packet data activity and assert a carrier sensesignal (CRS) to the GMII sublayer 210, depending on the monitoredactivity and whether the PCS sublayer 208 is implemented in a repeateror end station application. If the PCS sublayer 208 is implemented in arepeater, the carrier sense signal (CRS) may be asserted only forreceive-packet activity. The repeater may use the fact that multipleports exhibiting activity of the carrier sense signal (CRS) may indicatea collision. If the PCS sublayer 208 is implemented in an end station,the carrier sense signal (CRS) may be asserted for either transmit orreceive packet activity to assure a proper protocol is observed at theMAC sublayer. Thus, the carrier sense component 236 may assert thecarrier sense signal (CRS) when the receiving indicator signal(receiving) or the transmitting indicator signal (transmitting) 1, andmay deassert the carrier sense signal (CRS) when the=receiving indicatorsignal (receiving) and the transmitting indicator signal(transmitting)=0. The carrier sense signal (CRS) may be asserted forrepeaters when the receiving indicator signal (receiving)=TRUE state anddeasserted when the receiving indicator signal (receiving)=FALSE state.

The synchronization component 234 operates to ensure lock to code-groupboundaries and pass received code-groups to the receive component 232.That is, the synchronization component 234 may check that the PMAsublayer 206 is passing correctly aligned code-groups to the PCSsublayer 208. Since code-groups may be transmitted in a continuous bitstream over a medium at a specified rate (e.g., 1250 Mbaud), thesynchronization component 234 may determine whether the PMA sublayer 206is functioning dependably by detecting boundaries of the code bits andcode-groups within this continuous stream. The synchronization component234 may send a synchronization status signal (sync_status) to theauto-negotiation component 238 and, once it is sure that code-groupboundaries are correct, it may also pass code-groups to the receivecomponent 232.

The synchronization component 234 may require that a series of threeconsecutive “comma” containing code-groups be received, with no invalidcode-groups between them, in order to achieve receiver/transmittersynchronization. Each comma may be followed by an odd number of validdata code-groups, as discussed in greater detail below. This may ensurethat code-groups and ordered-sets are correctly detected and passed tothe receive component 232.

The synchronization component 234 may continuously accept code-groupsfrom the PMA sublayer 206 and convey received code-groups to the receivecomponent 232. The synchronization component 234 may send thesynchronization status signal (sync_status) to the auto-negotiationcomponent 238 to indicate whether the PMA sublayer 206 may befunctioning dependably.

Once synchronization is acquired, the synchronization component 234 maybegin counting the number of invalid code-groups received. That countmay be incremented for every code-group received that is invalid orcontains a comma in an odd code-group position. That count may bedecremented for every four consecutive valid code-groups received (acomma received in an even code-group position is considered valid). Thecount may never go below zero, and if it reaches four, thesynchronization status signal (sync_status) may be set to indicate afailure.

Synchronization may be maintained while good code-groups continue to bedetected. The synchronization component 234 may provides a hysteresisfunction such that in the event that invalid code-groups are detected,it may take a succession of invalid code-groups to cause loss ofsynchronization. The synchronization component 234 may be tolerant to afew errors in the received code-group stream. This may ensure that ashort error burst, such as a noise event corrupting data on a medium,which affects only a small number of code-groups, may not cause loss ofsynchronization. However, longer error bursts, indicating a significanterror condition or complete loss of received signal, may cause loss ofsynchronization, and code-group contents may no longer be consideredreliable. Long error bursts may cause the synchronization component 234to stop passing code-groups to the receive component 232 and to recheckcode-group boundaries. At start-up, and at any time the PCS sublayer 208has been unsynchronized for a predetermined time period (e.g., 10 ms ormore), the auto-negotiation component 238 may trigger a linkreconfiguration.

Auto-negotiating and manually configured devices may be unable tointerpret received code-groups until synchronization has been acquired.Once synchronization has been acquired, the PCS sublayer 208 may then beable to receive and interpret the incoming code-groups.

The auto-negotiation component 238 may control what is transmitted bythe transmit component 230 after synchronization has been acquired(i.e., the transmitting Configuration (/C/) state as shown above in FIG.4). The auto-negotiation component 238 may then perform anauto-negotiation process. Once this auto-negotiation process has beencompleted, the auto-negotiation component 238 may then activate thetransmit flag signal (xmit) for the transmit component 230. The transmitcomponent 230 may then transmit packet data presented on the TXD<7:0>signal by the GMII sublayer 210. Thus, the auto-negotiation component238 may set the transmit flag signal (xmit) to instruct the transmitcomponent 230 to either transmit normal Idle code-groups interspersedwith data packets received from the GMII sublayer 210 or to reconfigurethe link.

The auto-negotiation component 238 may perform the following functionsduring the auto-negotiation process.

First, the auto-negotiation component 238 may negotiate whether a linkmay be operated in a half-duplex or full-duplex mode. Of course, linkpartners must be capable of operating in the same mode, either half- orfull-duplex.

Second, the auto-negotiation component 238 may negotiate whether and howflow control may be used. Flow control may not be allowed withhalf-duplex links. If asymmetrical flow control is desired, agreementshould be reached on which link partner may be allowed to initiate pauserequests.

Thus, the auto-negotiation component 238 may test that a link is readyfor operation, negotiate whether the link may be operational in half- orfull-duplex mode, and negotiate whether and how flow control may beused. If these negotiations fail, link partners may be incompatible andcommunication may not be allowed. The auto-negotiation process should becomplete before a link may be used to transmit frames.

To ensure that Configuration (/C/) code-groups are not incorrectlyinterpreted as Data (/D/) code-groups, two ordered-sets of the 8B/10Bcode (i.e., Configuration code groups /C1/ and /C2/, as shown below inFIG. 10) may be reserved exclusively for transmitting auto-negotiationconfiguration messages. Each ordered-set may be a sequence of 4 bytes;one for a /K28.5/ special code, one for /D21.5/ or /D2.2/ code-groups,and two for a 16-bit Auto-Negotiation Configuration Register(/Config_Reg[15:0]/). Local device capabilities (e.g., the operationalmode it can support) may be encoded in the 16-bit ConfigurationRegister, known as a base page. The 16-bit Configuration Register mayinclude bits sufficient to specify the capabilities of the PhysicalLayer as well as an ACK(nowledgment) bit.

The two Configuration code-groups (/C1/ and /C2/) may be defined toenable an encoder to tightly control a running disparity (RD) of acode-group stream, as discussed in more detail below. Both link partnersmay transmit their configuration base page register to each other as acontinuous code-group stream, alternating between /C1/ and /C2/ordered-set sequences. Both /C1/ and /C2/ may contain comma sequencesthat may be used by a comma detect process in the PMA sublayer 206.

The Configuration Register data bits may be coded as third and fourthcharacters of the Configuration ordered-set. The auto-negotiationmessages may be sent as a series of:

-   “/K28.5/D21.5/Config_Reg[7:0]/K28.5/D21.5/Config_Reg[15:8]/K28.5/D2.2/Config_Reg[7:0]/K28.5/D2.2/Config_Reg[15:8]/    . . . .”    until the auto-negotiation process is complete, with each link    partner learning and acknowledging another's capabilities and    setting configuration appropriately (or detecting an error    condition). Note that the order of transmission of the Configuration    Register data may be encoded bits d0:d7 followed by encoded bits    d8:d15. The transmitted bit stream bears little resemblance to the    order of the Configuration Register.

The auto-negotiation process may involve the following actions: 1.)transmitting a local device's Configuration Register; 2.) receiving aConfiguration Register of a remote link partner; 3.) acknowledgingdetection of the link partner's abilities; 4.) detecting anacknowledgment from the link partner; 5.) resolving a mode of operation(i.e., half-duplex or full duplex); and 6.) resolving a flow controloperation by deciding a pause control mode.

Auto-negotiating devices may begin in the transmitting Configuration(/C/) state, as shown above in FIG. 4. Before data transmission maybegin, auto-negotiating devices should receive three consecutive,consistent /C/ ordered-sets. Consistent /C/ ordered-sets should containthe same code-groups within the last two code-groups of each /C/ordered-sets (ignoring an ACK(nowledge) bit). Once three consecutive,consistent /C/ ordered-sets have been received, the auto-negotiationprocess may look for three consecutive, consistent /C/ ordered-setswhich have the ACK bit set to 1. After a period of time, theauto-negotiating devices may transition to the transmitting Idle (/I/)state, as shown above in FIG. 4. At this point, the auto-negotiatingdevices may begin transmitting /I/ ordered-sets. After another, periodof time, the auto-negotiating devices may transition to the transmittingData (/D/) state, as shown above in FIG. 4. At this point, theauto-negotiating devices may be able to transmit and receive data,assuming a partner device has also received three consecutive,consistent /C/ ordered-sets followed by three consecutive, consistent/C/ ordered-sets with the ACK bit set to 1. Manually configured devicesmay skip the process of transmitting /C/ ordered-sets and begin in thetransmitting Data (/D/) state, as shown above in FIG. 4.

Referring to FIG. 5, there is shown a functional block diagram of thereceive component 232 in the PCS sublayer 208 in accordance with anembodiment of the present disclosure. The receive component 232 maycomprise a PCS receive component 502, a receive clock component 504, anda receive time transfer unit 506. The PCS receive component 502 maycomprise an 8B10B decoder component 508, a controller component 510, aConfiguration detect component 512, clock circuitry 514, an SPD/EPDdetect component 516, a carrier detect component 518, and an Idle detectcomponent 520. The 8B10B decoder 508 may comprise a code-group decodercomponent 522.

The 8B10B decoder 508 may decode the 10-bit parallel encoded signal(rx_code-group<9:0>) that is received from the synchronization component234 into the 8-bit parallel receive data signal (RXD<7:0>) that istransmitted to the GMII sublayer 210, or into Time Service Data (TSD)that is transmitted to the receive time transfer unit 506, as discussedin more detail below. That is, when a link is operating correctly anauto-negotiation process has completed, decoded 8-bit parallel receivedata signal (RXD<7:0>) may be transmitted to the GMII sublayer 210, ordecoded Time Service Data (TSD) may be transmitted to the receive timetransfer unit 506, as discussed in more detail below. In this case, thedecoding process may be essentially the reverse of the encoding processin the transmit component 230. Configuration code-groups or Idlecode-groups may not be passed to the GMII sublayer 210 or to the receivetime transfer unit 506, but instead are directed to the auto-negotiationcomponent 238.

When a link is operating correctly an auto-negotiation process hascompleted, the receive component 232 may continuously accept code-groupsfrom the synchronization component 234. The receive component 232 maymonitor these code-groups and generate the 8-bit parallel receive datasignal (RXD<7:0>), the RX_DV signal, and the RX_ER signal for the GMIIsublayer 210, or decoded Time Service Data (TSD) for the receive timetransfer unit 506, as discussed in more detail below. The receivecomponent 232 may also generate the receiving indicator signal(receiving) for the carrier sense component 236 and the transmitcomponent 230.

When the auto-negotiation component 238 sets the transmit flag signal(xmit) to indicate a Configuration or Idle state, the receive component232 may direct Configuration ordered-sets, Idle ordered-sets, and thecontents of a receive Configuration Register to the auto-negotiationcomponent 238. All of these ordered-sets may be sent only to theauto-negotiation component 238 and not the GMII sublayer 210. Asdiscussed above, during the auto-negotiation process, the transmitcomponent 230 may not accept input from the GMII sublayer 210, but mayinstead transmit Configuration ordered-sets as directed by theauto-negotiation component 238.

Referring to FIG. 6, there is shown a simplified state diagram forordered-set reception in the PCS receive component 502 in accordancewith an embodiment of the present disclosure. The PCS receive component502 may monitor the transmit flag signal (xmit) and the code-groupsbeing received for the following conditions: auto-negotiation transmitflag signal (xmit) detect (via controller component 510), carrier detect(via carrier detect component 518), Carrier_Extend (/R/) code-groupdetect (via controller component 510), code-group detect (valid decode)(via controller component 510), Start_of_Packet delimiter (SPD) (/S/)code-group detect (via SPD/EPD detect component 516), End_of_Packet(/T/) code-group detect (via SPD/EPD detect component 516),Error_Propagation (/V/) code-group detect (via controller component510), Idle (/I/) code-group detect (via Idle detect component 520), andConfiguration (/C/) code-group detect (via Configuration detectcomponent 512). The PCS receive component 502 may also generate theRX_DV signal and the RX_ER signal for the GMII sublayer 210 to indicatewhen data and/or a packet delimiter sequence is valid or in error. Thecarrier detect component 518 may generate the receiving indicator signal(receiving) and pass it to both the transmit component 230 and thecarrier sense component 236. The clock circuitry 514 generates theRX_CLK signal, which synchronizes the RXD<7:0> signal for the GMIIsublayer 210.

During the auto-negotiation process, the PCS receive component 502 mayenter a Configuration state (see FIG. 6), where it may detect, decode,and pass Configuration codes and the contents of a receive ConfigurationRegister to the auto-negotiation component 238 until a link isconfigured. A transition from a “carrier detected” state to a “receivedspecial character” state may be caused by a false carrier detect. Whenthis happens, the PCS receive component 502 may output the value 00001110 on the RXD<7:0> signal and set the RX_ER signal to a TRUE state.

Referring again to FIG. 5, the receive time transfer unit 506 mayinterface with the 8B10B decoder component 508 in the PCS receivecomponent 502 to coordinate the reception of Time Service Ordered-Sets(TSOSs) and Time Service Data (TSD) code-groups in therx_code-group<9:0> signal that is received from the synchronizationcomponent 234. The code-group decoder component 522 may analyze incomingPCS frames and detect Time Service Data (TSD) based on Time ServiceOrdered-Sets (TSOSs) in the frames. All Time Service Data (TSD) may beforwarded to the receive time transfer unit 506. For these timingframes, an exact arrival time and Time Service Data (TSD) may becaptured by the receive time transfer unit 506.

Thus, the 8B10B decoder 508 may decode the 10-bit parallel encodedsignal (rx_code-group<9:0>) that is received from the synchronizationcomponent 234 into the 8-bit parallel receive data signal (RXD<7:0>)that is transmitted to the GMII sublayer 210, or into Time Service Data(TSD) that is transmitted to the receive time transfer unit 506. Thatis, when a link is operating correctly and an auto-negotiation processhas completed, decoded 8-bit parallel receive data signal (RXD<7:0>) maybe transmitted to the GMII sublayer 210, or decoded Time Service Data(TSD) may be transmitted to the receive time transfer unit 506. Asdiscussed above, the decoding process may be essentially the reverse ofthe encoding process in the transmit component 230. Configurationcode-groups or Idle code-groups may not be passed to the GMII sublayer210 or to the receive time transfer unit 506, but instead are directedto the auto-negotiation component 238.

The receive clock component 504 may provide a receive timestamp signalto the receive time transfer unit 506 for determining an exact arrivaltime of Time Service Data (TSD).

Referring to FIG. 7, there is shown an encoder 700 for an 8B/10B codingscheme that splits data bytes into 3 bit (3B) and bit (5B) portions inaccordance with an embodiment of the present disclosure. The encoder 700comprises a 3B/4B encoder 702 for encoding a 3B data byte portion and a5B/6B encoder 704 for encoding a 5B data byte portion. FIG. 7 shows atranslation from input data byte bits (TXD<7:0>) to input byte bitlabels, to output code-group bit labels, to output code-group bits(tx_code-group<9:0>). The code-group bit 0 (least significant bit (lsb))is the first bit transmitted, and code-group bit 9 (most significant bit(msb)) is the last transmitted bit for each code-group.

In the encoder 700 of FIG. 7, an 8B/10B code may be constructed from the5B/6B and 3B/4B codes. A combined size of coding tables for the 5B/6Band 3B/4B codes is typically much smaller than a single coding table forthe 8B/10B code. Also, combinational logic can be used to furthersimplify coding tables. Thus, implementations based on splitting databytes into 3 bit (3B) and 5 bit (5B) portions can be very efficient.

As shown in FIG. 7, the 8 bits of the data byte are designated A, B, C,D, E, F, G, and H (lsb to msb). The encoder 700 translates the 8 bits ofthe data byte into a 10-bit code designated a, b, c, d, e, i, f, g, h,and j. The code-group is treated as two subgroups, one containing 6 codebits (a, b, c, d, e, and i) and one containing 4 code bits (f, g, h, andj). A given code is referred to by the shorthand /Dx.y/ (for data codes)or /Kx.y/ (for special codes), where x is the decimal value of EDCBA (Ebeing the msb of the string) and ranges from 0-31 and y is the decimalvalue of HGF (H being the msb of the string) ranging from 0-7. Theencoded 10B code-groups are transmitted (and received) serially in theorder abcdeifghj. Some examples of Data (D) and Special (K) Codes areshown in FIG. 8.

As shown in FIG. 7, the 8-bit unencoded value is effectively broken intotwo sub-blocks. A 5-bit sub-block, represented by the bits ADCDE of theinput byte, is encoded into a 6-bit sub-block represented by the bitsabcdei. A 3-bit sub-block, represented by the bits FGH of the inputbyte, is encoded into a 4-bit sub-block represented by the bits fghj. Asdescribed in greater detail below, each sub-block has a “disparity”value associated with it. A disparity represents a difference between anumber of zeros or ones in an encoded word (i.e., code-group). Severaldisparity conditions may be defined. First, a neutral disparityindicates that the number of zeros and ones is equal. Second, a positivedisparity indicates that there are more ones than zeros. Third, anegative disparity indicates there are more zeros than ones.

The encoder 700 is preferably designed to maintain a neutral averagedisparity. Average disparity is important because it determines a DCcomponent of a serial line. In order to ensure that a 10B-encoded signalcan be AC-coupled onto a medium (for example, pass through a transformeror capacitor) without distortion or the use of a bandwidth-increasingcode, the number of ones and zeros in the encoded stream should be equalover time for any arbitrary data transmission. Also, the maximum numberof consecutive ones or zeros should be minimized (even if the long-termaverages are equal) so as to avoid any short-term DC offset. This may becalled minimizing the run length of the code.

Every 10-bit code-group (both data and control codes) should fit intoone of the following possibilities, which helps limit the number ofconsecutive ones and zeros between any two code-groups: 5 ones and 5zeros, 6 ones and 4 zeros, or 4 ones and 6 zeros. Some of the possible1024 codes may be excluded to leave only code-groups with a run-lengthof 5 consecutive equal bits, and the difference between the number ofzeros and ones may be not more than 2. Thus, the usable code-groups maybe carefully chosen out of the 2¹⁰=1024 possible code-groups.

The code-groups used for data codes should not generate more than 4consecutive ones or zeros, or not have an imbalance of greater than one.The codes that have a large number of consecutive ones or zeros or thatare highly unbalanced should not be used for data (some are used forspecial codes, as discussed in greater detail below. This is oneadvantage of using a large code space: there are 1024 available codesfor 256 possible data values, so those codes that have undesirableproperties can simply be discarded.

In addition to selecting only the most balanced codes, two 10B encodingsfor every 8B groups may be defined. If the 10B encoding chosen for agiven value has the same number of ones and zeros (five of each), thenthe two 10B encodings may be the same. This would be a perfect balancedcode point requiring no compensation. The code for /D3.1/ (i.e., 8B bits[HGF EDCBA]=[001 00011] and 10B bits [abcdei fghj]=[110001 1001]) inFIG. 8 is an example of a balanced code point.

If the 10B encoding has more ones than zeros (or more zeros than ones),then the alternate encoding may use the inverse of the bits within thesubgroups [abcdei] or [fghj] (or both) in which the imbalance occurs. Anexception may be made in special code groups, in which the secondencoding may always be the inverse of the first, regardless of balance.Thus, /D23.2/ ([HGF EDCBA]=[010 10111]) in FIG. 8 has two differentvalid encodings: [abcdei fghj]=[111010 0101] and [abcdei fghj]=[0001010101]. Since the [abcdei] subgroup has more ones than zeros, the secondencoding may use the inverse of this subgroup (which has more zeros thanones). To prevent long runs of ones or zeros, which may make clocksynchronization more difficult at a receiver (even in balanced codes),the rules for determining the alternate coding for a given code pointmay also invert patterns of [111000] and [1100] (and their inverses) inthe [abcdei] and [fghj] subgroups, respectively.

A transmitter may keep a running tally, on a code-group by code-groupbasis, of whether there have been more ones than zeros transmitted ormore zeros than ones. Since a code-group may comprise (at most) animbalance of only one additional one or zero, only a single bit ofinformation may be required for the running tally. This may be called arunning disparity (RD).

The RD may be a measure of whether patterns are “leaning” toward toomany ones (RD+ or positive parity) or toward too many zeros (RD− ornegative disparity). Thus, the RD may be a record of the cumulativedisparity of every encoded word, and may be tracked by the encoder 700.

The 8-bit code-groups may be encoded based upon a current runningdisparity value. To guarantee a neutral average disparity, a positive RDshould be followed by a neutral or negative disparity and a negative RDshould be followed by a neutral or positive disparity.

The encoder 700 may select one of two possible codes for eachtransmitted byte depending on whether the current running disparity ispositive or negative, as shown in FIG. 8. That is, if a current RD isnegative, then an encoded value may come from the Current RD(−) column.The Current RD(−) column contains code-groups which do not contain morezeros than ones. This is because, in the absence of errors, a currentnegative RD value shows that more zeros have been transmitted than ones,and so a code-group with more ones than zeros should be transmittedbefore another code-group with more zeros than ones is transmitted.Also, if a current RD is positive, then an encoded value may come fromthe Current RD(+) column. The Current RD(+) column contains nocode-groups which contain more ones than zeros for the opposite reasonsabove. It should be noted that it is possible for the 10-bit code-groupto be identical for both columns of a given code-group (e.g., /D21.5/).

As a result of a given code-group being transmitted, the runningdisparity may either invert (“flip”) or be left the same. Thus, a verytight DC balance may be maintained over an entire sequence oftransmitted code-groups. In addition, a receiver may detect many errorsby checking the disparity of received code-words. Since a transmittershould never attempt to move the DC balance between code-groups by morethan 1 bit either way, a code-group so received may be assumed to be anerror.

Many of the 256 code-groups that represent the 8-bit values may bedisparity neutral. That is, both the 6-bit and 4-bit sub-blocks may havethe same number of zeros and ones. The RD at the end of each code-groupmay be continuously maintained as either positive or negative in atransmitter and checked at a receiver. A value of the RD may becalculated by using a disparity of each sub-block and an RD value of aprevious sub-block. Each 4-bit or 5-bit sub-block may be permitted tohave a disparity of +2, 0, or −2 within the sub-block and a disparity of+1 or −1 (positive or negative, respectively) at a beginning and end ofeach sub-block.

Similar to FIG. 8, 5B/6B and 3B/4B code tables may have two encoded bitcolumns called Current RD(+) and Current RD(−) for 6B and 4B sub-blocks,where Current RD may refer to the state of the RD at an end of a lastsub-block. 8B/10 code-groups may be constructed from these split codetables using a few rules.

First, the RD for a code-group may be calculated on the basis ofsub-blocks, where the first 6 bits (abcdei) form one sub-block and thesecond 4 bits (fghj) form the other sub-block. That is, the RD at thebeginning of the 6-bit sub-block is the RD at the end of the lastcode-group. Also, the RD at the beginning of the 4-bit sub-block is theRD at the end of the 6-bit sub-block. Further, the RD at the end of thecode-group is the RD at the end of the 4-bit sub-block.

Second, the RD for a sub-block may also be calculated on the basis ofsub-blocks. That is, the RD at the end of any sub-block is positive ifthe sub-block contains more ones than zeros. The RD at the end of anysub-block is also positive at the end of the 6-bit sub-block if the6-bit sub-block is 000111, and the RD at the end of any sub-block isfurther positive at the end of the 4-bit sub-block if the 4-bitsub-block is 0011. Also, the RD at the end of any sub-block is negativeif the sub-block contains more zeros than ones. The RD at the end of anysub-block is also negative at the end of the 6-bit sub-block if the6-bit sub-block is 111000, and the RD at the end of any sub-block isalso negative at the end of the 4-bit sub-block if the 4-bit sub-blockis 1100. Further, if none of the above apply, the RD at the end of thesub-block is the same as at the beginning of the sub-block.

Third, all sub-blocks with equal numbers of zeros and ones are disparityneutral. In order to limit the run length of zeros or ones betweensub-blocks, the following rules apply. First, sub-blocks encoded as000111 or 0011 are only generated when the RD at the beginning of thesub-block is positive. Thus, the RD at the end of these sub-blocks isalso positive. Likewise, sub-blocks containing 111000 or 1100 are onlygenerated when the RD at the beginning of the sub-block is negative.Thus, the RD at the end of these sub-blocks is also negative. Second,the code-groups D11.7, D13.7, D14.7, D17.7, D18.7, and D20.7 must usethe alternative 4B encoding.

A transmitter may assume a negative value for an initial RD afterpowering on (start-up) or exiting a test mode. It may calculate a newvalue for the RD based on each code-group it transmits. Code-groups thatare disparity neutral may not change the value of the RD (e.g., D5.6 inFIG. 8, which has 8B bits [HGF EDCBA]=[110 00101], 10B bits CurrentRD(−)=[abcdei fghj]=[101001 0110] and 10B bits Current RD(+)=[abcdeifghj]=[101001 0110]). Non-neutral disparity code-groups may flip thevalue of the RD. Also, 8B/10B encoding tables may be used to determinethe proper encoding of a next data byte. For example, assume that thecurrent RD is positive, and the next byte to be transmitted is D2.2 asshown in FIG. 8 (i.e., 8B bits [HGF EDCBA]=[010 00010], 10B bits CurrentRD(−)=[abcdei fghj]=[101101 0101] and 10B bits Current RD(+)=[abcdeifghj]=[010010 0101]). The encoding for D2.2 should be taken from the“Current RD(+)” column.

After powering on or exiting a test mode, a receiver may assume either apositive or negative value for an initial RD. On receipt of code-groups,it may determine the validity of the code-group and calculate a newvalue of RD based on the received code-group. The RD value may be usedas an additional error check at the receiver, since the transmittedvalue may be defined to ensure that the RD may be maintained eitherpositive or negative (i.e., not zero or greater than +1 or less than−1).

From a receiver's point of view, if a received code-group is in acorrect column of an 8B/10B encoding table, depending on the current RD,it may be considered valid and may be decoded and appropriate action maybe taken dependent on its contents. For data code-groups, an associateddata byte may be determined (decoded). If a received code-group is in anincorrect column of an 8B/10B encoding table, it may be consideredinvalid. Invalid code-groups may result in loss of synchronization ifenough of them are detected. However, regardless of the validity of thecode-group, it may be used to compute a new value of the RD for thereceiver.

Detection of an invalid code-group may not necessarily indicate that thecode-group in which the invalid code-group was detected is in error.Invalid code-groups may result from a prior error which altered the RDof a bit stream, but which did not result in a detectable error at thecode-group in which the error occurred. The number of invalidcode-groups detected may be proportional to the bit-error-rate (BER) ofthe link. Link monitoring may be performed by counting invalidcode-groups.

Control and management information, as opposed to data, may becommunicated through the transmission of special recognizable bitpatterns referred to herein as ordered-sets. Ordered-sets may be 1, 2,or 4 code-groups in length, and may begin with a code from a specialcode-group. FIG. 9 comprises a list of special code-groups.

A first code-group after power-up or reset may be considered even andcode-groups that follow the first code-group may alternate between oddand even. 10-bit code-groups may be categorized into data (/Dx.y/),special (/Kx.y/), and invalid code-groups. IEEE Standard 802.3 containsa table of all valid encodings of data bits 00-FF. Invalid code-groupsmay be 10-bit code-groups which have not been defined in the IEEEStandard table of valid encodings, and those code-groups which arereceived or transmitted with an incorrect RD.

Only 12 of the control (K) code-groups are defined as valid controlcode-groups for Gigabit Ethernet. The use of special codes makesordered-sets easily distinguishable from data. This distinction allowsboth data and control information to be passed unambiguously across thesame communications channel. Ordered-sets may provide an “out-of-band”signaling method.

Out of the 12 special code-groups shown in FIG. 9, only 6 may be used toconstruct ordered-sets for Gigabit Ethernet. Gigabit Ethernet definesand uses eight such ordered-sets, as shown in FIG. 10. These eightordered-sets may be categorized as Configuration ordered-sets, Idleordered-sets, and Encapsulation ordered-sets.

The Configuration ordered sets may be used for auto-negotiation of linkcharacteristics. Specifically, the ordered-sets /C1/ and /C2/ may beused to convey the contents of a 16-bit configuration register:

/C1/=/K28.5/D21.5/Config_Reg[7:0]/Config_Reg[15:8]/

/C2/=/K28.5/D2.2/Config_Reg[7:0]/Config_Reg[15:8]/

The /K28.5/ code-group may be used as a first code-group because itcontains a comma, which is a unique data pattern as discussed above.Receipt of this code-group may not occur during a data packet unlessthere is a data error. This makes it very useful for use with veryspecific ordered-sets such as configuration and idle. Code-groups/D21.5/ and /D2.2/ were chosen for their high bit transition density(see FIG. 8). Continuous repetition of ordered set /C1/ alternating withordered-set /C2/ may be used to convey the contents of the 16-bitconfiguration register.

Ordered-set /C1/ may flip a current RD after a transmission ofcode-group /D21.5/. This is because code-group /K28.5/ may flip the RDand code-group /D21.5/ may maintain the current RD.

Ordered-set /C2/ may sustain a current RD after a transmission ofcode-group /D2.2/. This is because both code-group /K28.5/ andcode-group /D2.2/ may flip the current RD.

For an identical value of the configuration register, the /C1/ordered-set may change the RD at the end of a transmitted /C1/ordered-set to opposite the RD at the start. The /C2/ ordered-set maykeep the RD at the end of a transmitted /C1/ ordered-set at the same RDas at the start.

The Idle ordered-sets (/I/) may be used between transmissions. They maybe transmitted continuously and repetitively whenever there is notransmit activity from the GMII sublayer (e.g., TX_EN and TX_ER are bothinactive). The ordered-sets /I1/ and /I2/ may be transmitted to providea continuous fill pattern to establish and maintain clocksynchronization and to delimit packet data. Periodic transitions arerequired to maintain synchronization of a receive clock. The /I/ordered-sets may have a high transition density to keep a receiver inoptimum sync during a high-frequency Idle ordered-set sequence. Distinctcarrier events may be separated by Idle ordered sets. When a receiversees an Idle ordered-set, it may drop a carrier.

The /I1/ ordered-set may comprise a negative disparity /K28.5/code-group (10-bit 0x283) followed by a /D5.6/ code-group. The /D5.6/code-group (see FIG. 8) has the same value, 10-bit 0x1A5, for positiveand negative disparity versions and has a balanced 10-bit code. The /I1/ordered-set should be transmitted only once if the RD is positive beforetransmitting the /I1/ ordered-set. The /I1/ ordered-set may change theRD at the end of a transmitted /I1/ ordered-set to opposite the RD atthe start.

The /I2/ ordered-set may comprise a positive disparity /K28.5/code-group (10-bit 0x17C) followed by a negative disparity /D16.2/code-group (10-bit 0x289). The /I2/ ordered-set may start an Idleordered-set sequence if the RD is negative before starting the Idleordered-set sequence. Otherwise, the /I2/ ordered-set may follow the/I1/ ordered-set and be continually transmitted, maintaining a negativeRD until the end of a sequence of transmitted code-groups. The /D5.6/code-group and the /D16.2/ code-group were chosen for their high bittransition density (see FIG. 8).

The /I/ ordered-sets may be transmitted to ensure that the RD isnegative. The /I1/ ordered-set and the /I2/ ordered-set may be used tocontrol the RD of a code-bit stream. The /I1/ ordered-set may change theRD, while the /I2/ ordered-set may maintain the RD. If the RD ispositive before an Idle ordered-set, an /I1/ ordered-set may be chosen.If the RD is negative before an Idle ordered-set, an /I2/ ordered-setmay be chosen. The first Idle ordered-set following a packet or aConfiguration ordered-set may restore a current positive or negative RDto a negative value. Only one Idle ordered-set may be required for thispurpose. All subsequent Idle ordered-sets may be /I2/ ordered-sets toensure a negative ending RD.

Thus, the use of /I1/ and /I2/ ordered-sets may produce the followingbehavior. The RD at the end of an /I1/ ordered-set may be the oppositeof the RD at the beginning of the /I1/ ordered-set. However, the RD atthe end of an /I2/ ordered-set may be the same as the RD at thebeginning of the /I2/ ordered set (i.e., right before transmitting the/I2/ ordered-set). The /I2/ ordered-set may keep the RD at the end of atransmitted /I1/ ordered-set at the same RD as at the start. Thisensures a negative RD at the end of an Idle ordered-set.

The Encapsulation ordered-sets may comprise a Start_of_Packet orStart_of_Packet Delimiter (SPD) ordered-set (/S/), an End_of_Packetordered-set (/T/), a Carrier_Extend ordered-set (/R/), and anError_Propagation ordered-set (/V/).

The Start_of_Packet or Start_of_Packet Delimiter (SPD) ordered-set (/S/)may be used to indicate a start of a data transmission sequence. TheTX_EN signal may be asserted with the first byte of a preamble and mayremain asserted for the whole of a MAC frame (see FIG. 11). When theTX_EN signal goes active, the current (first) byte of a MAC preamble maybe replaced with an /S/ ordered-set. At the start of data reception at areceiver, the /S/ ordered-set may be replaced by a first byte of a MACpreamble. The /S/ ordered-set follows an /I/ ordered-set for a singlepacket or a first packet of a burst of packets. The /S/ ordered-setfollows an /R/ ordered-set for a second and subsequent packets of aburst of packets.

The MAC preamble of an Gigabit Ethernet packet comprises a 56-bit(7-byte) pattern of alternating 1 and 0 bits (where the last bit is azero), which allows connected network devices to easily detect a newincoming frame. The MAC preamble allows the Physical Layer to detect acarrier and to reach steady-state synchronization with an incoming framebefore an actual Start-of-Frame Delimiter (SFD) has been received.

The End_of_Packet ordered-set (/T/) may be used to indicate an end of adata transmission sequence. It is typically the first ordered-set thatindicates the end of a data transmission sequence. The /T/ ordered-setmay be used by a device to assist in quick deassertion of a carrierindication. As illustrated in FIG. 11, the TX_EN signal may bedeasserted at the end of a frame check sequence (FCS) of a MAC framebeing transmitted, and then the /T/ ordered-set may be transmitted.

An End_of_Packet Delimiter (EPD) may comprise either /T/R/R/ code-groupsor /T/R/K28.5/ code-groups. The /K28.5/ code-group typically occurs as afirst code-group of the /I/ ordered-set. The EPD may be transmittedfollowing each deassertion of the TX_EN signal, which may follow a lastdata byte of the FCS of the MAC packet.

A receiver may consider a MAC inter-packet gap (IPG) to have begun twobytes prior to transmission of the first /I/ ordered-set after the EPD(see FIG. 11). For example, when a packet is terminated by EPD, the/T/R/ code-groups portion of the EPD may occupy part of a regionconsidered to be a MAC IPG.

The Carrier_Extend ordered-set (/R/) may be used for multiple purposes.First, the /R/ ordered-set may be used to indicate a carrier extensionduring a burst of packets. Second, the /R/ ordered-set may be used toseparate packets within a burst of packets. Third, the /R/ ordered-setmay be used to form a first /R/ ordered-set following a /T/ ordered-setin an EPD /T/R/I/ or /T/R/R/I/ ordered-set sequence. If the /T/ordered-set is transmitted as an even-number character, and there is nocarrier extension, exactly one /R/ ordered-set may be transmitted afterthe /T/ ordered-set. Fourth, the /R/ ordered-set may be used to form asecond /R/ ordered-set following a /T/ ordered-set in an EPD /T/R/R/I/ordered-set sequence. This /R/ ordered-set may be used, if necessary, topad the only or last packet of a burst of packets so that a subsequent/I/ ordered-set may be aligned on an even-numbered code-group boundary(i.e., ensure a correct code-group alignment of a first Idle ordered-setafter packet transmission).

The Error_Propagation ordered-set (/V/) may be used to indicate acollision or an error condition. Invalid code-groups are notintentionally transmitted onto media by end stations. The detection ofan invalid code-group may be an indication that a receiver is out ofsynchronization. An invalid code-group is recognized by a receiver whenone of the following conditions is detected: 1.) a code violation isdetected within a code-group; 2.) a special code-group alignment erroris detected (e.g., a /K28.5/ code-group is received as an odd-numberedcode-group, a non-/K28.5/ special code-group immediately follows a/K28.5/ code-group, a non-supported special character is detected,etc.); 3.) an ordered-set with improper beginning RD is received.

The Error_Propagation ordered-set (/V/) may be used to indicatetransmission of an error or invalid code to other connected networkdevices. The /V/ ordered-set may be transmitted upon assertion of theTX_EN and TX_ER signals, or assertion of the TX_ER signal withdeassertion of the TX_EN signal while the TXD<7:0> signal is not equalto 0F. Reception of the /V/ ordered-set or an invalid code-group (theresult of a collision or an error condition) may be indicated byasserting the RX_ER signal and setting the RXD<7:0> signal to theappropriate value.

The 8B/10B encoding of the /K28.5/ special code-group (see FIGS. 8 and9) comprises the abcdeif 7-bit pattern 0011111 (comma+), or its inversethe abcdeif 7-bit pattern 1100000 (comma−). Each of these comma bitpatterns is unique in that it contains five sequential one or zeros.Each of these comma bit patterns, in absence of transmission errors, maynot appear within a transmitted code-group, and may not occur acrossboundaries of two adjacent code-groups.

The /K28.5/ special code-group comprises a comma bit pattern followed byan alternating sequence of zeros and ones (i.e., 00111110101′ or1100000101′) and was consciously selected for use in the Configurationand Idle ordered-sets. This overall bit pattern may provide an easy wayto align and synchronize an incoming bit stream at link startup andbetween frames. The comma bit pattern may be used by the PMA sublayer206 to align an incoming serial stream. That is, it may be used toeasily find and verify character and word boundaries of a received bitstream. The comma bit pattern may also be used by the PCS sublayer 208to acquire and maintain synchronization. Bits ghj of the /K28.5/ specialcode-group present a maximum number of transitions, simplifying receiveracquisition of bit synchronization.

As discussed above, Gigabit Ethernet uses the 8B/10B coding scheme,which ensures that unless an error occurs, the comma bit pattern isunique to the /K28.5/ special code-group. The /K28.5/ special code-groupis the only code-group comprising a comma bit pattern used in normaloperation for Gigabit Ethernet. The comma bit pattern may not occuracross boundaries of any two adjacent code-groups unless an error hasoccurred. Although the /K28.7/ special code-group also comprises a commabit pattern, it is reserved for diagnostics usage. Also, the /K28.7/special code-group should be used with care because this code-group, incombination with some others (/K28.x/, /D3.x/, /D11.x/, /D12.x/,/D19.x/, /D20.x/, or /D28.x/ code-group, where x is a value from 0 to7), may generate a comma bit pattern that is not code-group aligned(i.e., causes a comma bit pattern to be generated across boundaries oftwo code-groups). The 10-bit /K28.5/ special code-group may be used toprevent a 7-bit comma bit pattern from being detected across boundarieswhen a /K28.7/ special code-group is followed by a /K28.x/, /D3.x/,/D11.x/, /D12.x/, /D19.x/, /D20.x/, or /D28.x/ code-group, where x is avalue from 0 to 7. Another special code-group, /K28.1/, also comprises acomma bit pattern, but this special code-group is not used in GigabitEthernet.

A primary function of the PCS sublayer 208, after device start-up, isthe encapsulation of MAC frames into code-group streams for transmissionby the PMA sublayer 206 and the PMD sublayer 204. The PCS sublayer 208may accept packets from the MAC sublayer (through the Reconciliationsublayer and the GMII sublayer 210) and encapsulate them into acode-group stream. The PCS sublayer 208 may decode a code-group streamreceived from the PMA sublayer 206, extract packets from it, and passthe packets to the MAC sublayer (through the Reconciliation sublayer andthe GMII sublayer 210). The encapsulation process of a MAC frame isshown in FIG. 11. A reception and de-encapsulation process in the PCSsublayer 208 is essentially the reverse of the encapsulation andtransmission process.

The TX_EN, TX_ER, RX_DV, and RX_ER signals may play an important part inthe encapsulation and de-encapsulation of MAC frames. These signals,along with the TXD<7:0> and RXD<7:0> signals, may be used to indicatethe state of the MAC sublayer (e.g., whether the MAC sublayer istransmitting a normal data frame or a control signal).

As discussed above, the /S/ and /T/ ordered-sets may be used asdelimiters that indicate a beginning and an end of a PCS transmittedframe, respectively. The /S/ and /T/ ordered-sets may delimit a data bitstream in a Physical Layer encapsulation, denoting an end of an idleordered-set or an inter-frame gap and a beginning of a preamble (seeFIG. 11). This may be distinct from a Start-of-Frame Delimiter (SFD)used by the Data Link Layer to indicate an end of a preamble and abeginning of a destination address.

The Start Frame Delimiter (SFD) may be an 8-bit (1-byte) value markingan end of a preamble of a Gigabit Ethernet frame. The SFD may beimmediately followed by a destination MAC address. It may have a value10101011 that continues an alternating bit pattern of a preamble (andtwo is in the last two bit positions may identify an end of a preamblesequence). The SFD may be designed to break this pattern, and signal astart of an actual frame. The SFD may be signaled “in-band,” as opposedto “out-of-band” signaling that may be used by the /S/ ordered-set. TheIEEE Standard 802.3 uses the term “Start of Packet Delimiter” for the/S/ ordered-set rather than “Start of Frame” to indicate thisdifferentiation.

Data packets are transmitted according to the following requirements.First, an /I/ ordered-set should be transmitted in an even code-groupposition. Second, an /I/ ordered-set should precede the /S/ ordered-setfor a first packet of a burst of packets or an only packet of anon-burst of packets. This means that the /S/ ordered-set may betransmitted in an even code-group position if it follows an /I/ordered-set. Third, the /R/ ordered-set should precede the /S/ordered-set for a second and subsequent packets within a burst ofpackets. Fourth, the /S/ ordered-set may be transmitted in an even orodd code position when following the /R/ ordered-set.

Referring to FIG. 12, there is shown a table indicating when aStart_of_Packet Delimiter (SPD) ordered-set (/S/) may be transmitted inaccordance with an embodiment of the present disclosure. As shown inFIG. 12, the /S/ ordered-set should be transmitted in an even code-groupposition when following an /I/ ordered-set.

Referring to FIG. 13, there is shown a table indicating when anEnd_of_Packet Delimiter (EPD) may be transmitted with /T/R/K28.5/code-groups in accordance with an embodiment of the present disclosure.As shown in FIG. 13, the EPD sequence should be transmitted when the /T/code-group falls in an even code-group position. In this case, an /I/ordered-set may also fall in an even code-group position.

Referring to FIG. 14, there is shown a table indicating when anEnd_of_Packet Delimiter (EPD) may be transmitted with /T/R/R/code-groups in accordance with an embodiment of the present disclosure.As shown in FIG. 14, when the /T/ code-group falls in an odd code-groupposition, a /T/R/K28.5/ EPD may not suffice because it would cause an/I/ ordered-set to fall in an odd code-group position.

Referring back to FIG. 2, the PCS sublayer 208 may interpret the TX_EN,TX_ER, and TXD<7:0> signals and transmit ordered-sets based thereon. Asshown in Table 1, the TX_EN signal is asserted whenever a packet isbeing sent. If the GMII sublayer 210 recognizes an error during datatransmission, it will assert the TX_ER signal as well as alert the PCSsublayer 208 to send a /V/ code-group. The TX_ER signal is used toindicate a transmission error, except when transmitting a carrierextension.

The TX_EN signal is deasserted when the FCS field has been transmitted.A carrier extension may be transmitted after a packet when the TX_ENsignal and the TX_ER signal are both flipped so that the TX_EN signal=0and the TX_ER signal=1 and the TXD<7:0> signal is not equal to 0F, thenthe PCS sublayer 208 may consider it an error and transmit a /V/ordered-set.

If the TX_EN signal=0 and the TX_ER signal=0, then the PCS sublayer 208may transmit an /I/ ordered-set.

TABLE 1 TX_EN TX_ER TXD<7:0> Indication Ordered-Set 0 0 00-FF NormalInter-Frame /I/ 0 1 00-0E Reserved (Interpreted as /V/ Carrier ExtendError) 0 1 0F Carrier Extend /R/ 0 1 10-1E Reserved (Interpreted as /V/Carrier Extend Error) 0 1 1F Carrier Extend Error /V/ 0 1 20-FF Reserved(Interpreted as /V/ Carrier Extend Error) 1 0 00-FF Normal DataTransmission /S/D/T/R/ 1 1 00-FF Transmit Error Propagation /V/

The PCS sublayer 208 may also interpret the RX_DV, RX_ER, and RXD<7:0>signals and transmit ordered-sets based thereon. Table 2 shows thestates of the RX_DV, RX_ER, and RXD<7:0> signals and correspondingtransmitted ordered-sets.

TABLE 2 RX_DV RX_ER RXD<7:0> Indication Ordered-Set 0 0 00-FF NormalInter-Frame /I/ 0 1 00 Normal Inter-Frame /I/ 0 1 01-1D Reserved — 0 10E False Carrier Indication — 0 1 0F Carrier Extend /R/ 0 1 10-1EReserved — 0 1 1F Carrier Extend Error — 0 1 20-FF Reserved — 1 0 00-FFNormal Data Reception /S/D/T/R/ 1 1 00-FF Data Reception Error /V/

As shown in FIG. 9, there are 5 unused special code-groups which may beused as Time Service Ordered-Sets (TSOSs) in accordance with anembodiment of the present disclosure. The set of five specialcode-groups may include /K28.0/, /K28.2/, /K28.3/, /K28.4/ and /K28.6/.The special code-group /K28.1/ may be excluded and not used because, asexplained above, it contains a comma which desirably should be handledby the special code-group /K28.5/. The special code-group /K28.5/containing a comma may be used for normal Gigabit Ethernet operations,while special code-group /K28.7/ may be reserved for diagnosis usage.Thus, referring to FIG. 15, a Time Service Ordered-Set (TSOS) may bedefined according to one of three options in accordance with anembodiment of the present disclosure.

First, a Time Service Ordered-Set (TSOS) may be a single unused specialcode-group (K) selected from the unused special code-groups. Forexample, referring to FIG. 15, a Time Service Ordered-Set (TSOS) may be/Kx.y/.

Second, a Time Service Ordered-Set (TSOS) may be a sequence ofcode-groups comprising an initial unused special code-group (K) followedby additional unused special code-groups (K). For example, referring toFIG. 15, a Time Service Ordered-Set (TSOS) may be /Kx1.y1/Kx2.y2/.

Third, a Time Service Ordered-Set (TSOS) may be a sequence ofcode-groups comprising an initial unused special code-group (K) followedby additional data (D) code-groups. For example, referring to FIG. 15, aTime Service Ordered-Set (TSOS) may be /Kx.y/Du.v/. In this case, thesecond code-group /Du.v/ may be selected to provide a high bittransition density, proper disparity control, and sufficient codingdistance similar to a choice of data characters in /C/ and /I/ordered-sets.

A Time Service Ordered-Set (TSOS) should be universally understood bytransmitters and receivers of Time Service Data (TSD). Standardizationof Time Service Ordered-Sets (TSOSs) may facilitate interoperabilitybetween devices in a multi-vendor network.

Furthermore, the definition of a Time Service Ordered-Set (TSOS) shouldindicate a type of Time Service Data (TSD) encapsulated in a PCS frame.A globally unique Time Service Ordered-Set (TSOS) may be defined foreach type of Time Service Data (TSD) (e.g., IEEE 1588 PTP TSD, NTP TSD,etc.). IEEE 1588 PTP and NTP are standard protocols used fortransferring timing data in packet networks. Thus, to illustratefurther, three time transfer protocols denoted TTP1, TTP2, and TTP3 mayeach have globally unique Time Service Ordered-Sets (TSOSs), TSOS1,TSOS2, and TSOS3, respectively. Each of these unique Time ServiceOrdered-Set (TSOS) may be defined based on any of the three optionsdescribed above. In practice, most timing service applications may useavailable standard-based protocols like PTP and NTP, which means thatthe space of Time Service Ordered-Sets (TSOSs) available for use may beadequate (if not more than enough).

Referring to FIG. 16, there is shown an encapsulation of a Time ServiceOrdered-Set (TSOS) and Time Service Data (TSD) when an encoder is notbusy in accordance with an embodiment of the present disclosure. Theordered-sets /S/ and /T/ may be used as delimiters to indicate abeginning and an end of each transmitted frame, respectively. A TimeService Ordered-Set (TSOS) may follow an /S/ ordered-set for any PCSframe carrying Time Service Data (TSD). FIG. 16 illustrates theencapsulation of Time Service Data (TSD) when an encoder is not busy(e.g., when no packet data from the GMII sublayer 210 is ready fortransmission).

Referring to FIG. 17, there is shown an encapsulation of a Time ServiceOrdered-Set (TSOS) and Time Service Data (TSD) when an encoder is busyin accordance with an embodiment of the present disclosure. The conceptof frame bursting may be used when an encoder is busy transmitting MACpackets from the GMII sublayer 210. Frame bursting allows a device tosend multiple PCS frames with a single access of a channel. Theordered-set /R/ may precede an /S/ ordered-set for second and subsequentpackets within a burst of packets, as shown in FIG. 17. The transmissionof a Time Service Ordered-Set (TSOS) and Time Service Data (TSD) mayfollow the PCS transmit data format described above. FIG. 17 illustratesthe encapsulation of Time Service Data (TSD) when an encoder is busy(e.g., when packet data from the GMII sublayer 210 is ready fortransmission).

At this point it should be noted that in either case (i.e., the caseillustrated in FIG. 16 or the case illustrated in FIG. 17), the PCStransmit component 302, the PCS receive component 502, and therespective time transfer units 306 and 506 may capture write/readtimestamps on-the-fly at the Physical Layer. This results in veryaccurate timestamp measurements and clock synchronization.

In view of the foregoing, it may be appreciated that Time ServiceOrdered-Sets (TSOSs) as defined herein may provide a vehicle fortransporting timing information (either standards based or proprietary)directly over an Ethernet physical layer while bypassing higher protocollayer processing. Thus, impairments associated with these higherprotocol layers that may impair the quality of a transferred clock arecompletely eliminated.

At this point it should be noted that time transfer via signal encodingin accordance with the present disclosure as described above typicallyinvolves the processing of input data and the generation of output datato some extent. This input data processing and output data generationmay be implemented in hardware or software. For example, specificelectronic components may be employed in a PCS sublayer or similar orrelated circuitry for implementing the functions associated with timetransfer via signal encoding in accordance with the present disclosureas described above. Alternatively, one or more processors operating inaccordance with instructions may implement the functions associated withtime transfer via signal encoding in accordance with the presentdisclosure as described above. If such is the case, it is within thescope of the present disclosure that such instructions may be stored onone or more processor readable media (e.g., a magnetic disk or otherstorage medium), or transmitted to one or more processors via one ormore signals embodied in one or more carrier waves.

The present disclosure is not to be limited in scope by the specificembodiments described herein. Indeed, other various embodiments of andmodifications to the present disclosure, in addition to those describedherein, will be apparent to those of ordinary skill in the art from theforegoing description and accompanying drawings. Thus, such otherembodiments and modifications are intended to fall within the scope ofthe present disclosure. Further, although the present disclosure hasbeen described herein in the context of a particular implementation in aparticular environment for a particular purpose, those of ordinary skillin the art will recognize that its usefulness is not limited thereto andthat the present disclosure may be beneficially implemented in anynumber of environments for any number of purposes. Accordingly, theclaims set forth below should be construed in view of the full breadthand spirit of the present disclosure as described herein.

1. A method of transferring time information, comprising: generating a time service ordered-set for inclusion in a physical coding sublayer frame of a physical layer device, the time service ordered-set comprising at least one special code-group selected from unused special code-groups; generating time service data for inclusion in the physical coding sublayer frame; and transmitting the physical coding sublayer frame.
 2. The method of claim 1, wherein the time service ordered-set consists of a single special code-group.
 3. The method of claim 1, wherein the time service ordered-set comprises an initial special code group selected from unused special code-groups followed by at least one additional code-group.
 4. The method of claim 3, wherein the at least one additional code-group is selected from unused special code-groups.
 5. The method of claim 3, wherein the at least one additional code-group comprises a data code-group.
 6. The method of claim 1, wherein 4e data code-group has at least one of high bit transition density, disparity control, and coding distance.
 7. The method of claim 1, wherein generating time service data comprises generating a transmit time stamp.
 8. The method of claim 1, wherein the time service ordered-set indicates a type of the time service data.
 9. The method of claim 1, further comprising: receiving a time service ordered-set in a physical coding sublayer frame of a physical layer device, the time service ordered-set comprising at least one special code-group selected from unused special code-groups; extracting time service data from the physical coding sublayer frame.
 10. The method of claim 9, further comprising generating a receive time stamp to determine a receipt time of the time service data.
 11. An apparatus for transferring time information, comprising: a time service data generator operable to generate time service data; an encoder operable: to generate a time service ordered-set for inclusion in a physical coding sublayer frame of a physical layer device, the time service ordered-set comprising at least one special code-group selected from unused special code-groups; and to include the time service data in the physical coding sublayer frame following the ordered-set; and a transmitter operable to transmit the physical coding sublayer frame.
 12. The apparatus of claim 11, wherein the ordered-set consists of a single special code-group.
 13. The apparatus of claim 11, wherein the ordered-set comprises an initial special code group selected from unused special code-groups followed by at least one additional code-group.
 14. The apparatus of claim 13, wherein the at least one additional code-group is selected from unused special code-groups.
 15. The apparatus of claim 13, wherein the at least one additional code-group comprises a data code-group.
 16. The apparatus of claim 11, wherein the data code-group has at least one of high bit transition density, disparity control, and coding distance.
 17. The apparatus of claim 11, wherein the time service data generator is operable to generate a transmit time stamp.
 18. The apparatus of claim 11, wherein the time service ordered-set indicates a type of the time service data.
 19. An apparatus for transferring timing information, comprising: a receiver operable to receive a time service ordered-set in a physical coding sublayer frame of a physical layer device, the time service ordered-set comprising at least one special code-group selected from unused special code-groups; a decoder operable to extract time service data from the physical coding sublayer frame.
 20. The apparatus of claim 19, further comprising a time service data generator operable to generate a receive time stamp to determine a receipt time of the time service data.
 21. A method of transferring time information using an encoder that encodes n bit bytes into m bit code words, m being greater than n, the method comprising: generating a time service data indicator for inclusion in a physical coding sublayer frame of a physical layer device, the time service data indicator comprising at least one m bit code word used only to indicate presence of time service data; generating time service data for inclusion in the physical coding sublayer frame; and transmitting the physical coding sublayer frame.
 22. The method of claim 21, further comprising: receiving a time service data indicator in a physical coding sublayer frame of a physical layer device, the time service data indicator comprising at least one m bit code word used only to indicate presence of time service data; and extracting time service data from the physical coding sublayer frame.
 23. An apparatus for transferring time information, comprising: a time service data generator operable to generate time service data; an encoder operable to encode n bit bytes into m bit code words, m being greater than n, the encoder being further operable: to generate a time service data indicator for inclusion in a physical coding sublayer frame of a physical layer device, the time service data indicator comprising at least one m bit code word used only to indicate presence of time service data; and to include the time service data in the physical coding sublayer frame following the time service data indicator; and a transmitter operable to transmit the physical coding sublayer frame.
 24. An apparatus for transferring timing information, comprising: a receiver operable to receive a physical coding sublayer frame; and a decoder operable to decode m bit code words into n bit bytes, m being greater than n, the decoder being further operable: to detect a time service data indicator in the received physical coding sublayer frame, the time service indicator comprising at least one m bit code word used only to indicate presence of time service data; and to extract time service data from the received physical coding sublayer frame. 